package com.ktgj.customer.mapper;

import java.util.List;
import com.ktgj.customer.domain.Coupon;
import com.ktgj.customer.domain.CouponBO;
import com.ktgj.customer.domain.CouponDto;
import com.ktgj.customer.domain.CustomerCard;
import com.ktgj.customer.domain.dto.ProductSelectDTO;
import org.apache.ibatis.annotations.Param;

/**
 * 优惠券信息Mapper接口
 * 
 * @author ruoyi
 * @date 2021-08-03
 */
public interface CouponMapper 
{
    /**
     * 查询优惠券信息
     * 
     * @param couponId 优惠券信息ID
     * @return 优惠券信息
     */
    public Coupon selectCouponById(Long couponId);

    /**
     * 查询优惠券信息列表
     * 
     * @param coupon 优惠券信息
     * @return 优惠券信息集合
     */
    public List<Coupon> selectCouponList(Coupon coupon);

    /**
     * 新增优惠券信息
     * 
     * @param coupon 优惠券信息
     * @return 结果
     */
    public int insertCoupon(Coupon coupon);

    /**
     * 修改优惠券信息
     * 
     * @param coupon 优惠券信息
     * @return 结果
     */
    public int updateCoupon(Coupon coupon);

    /**
     * 删除优惠券信息
     * 
     * @param couponId 优惠券信息ID
     * @return 结果
     */
    public int deleteCouponById(Long couponId);

    /**
     * 批量删除优惠券信息
     * 
     * @param couponIds 需要删除的数据ID
     * @return 结果
     */
    public int deleteCouponByIds(Long[] couponIds);

    /**
     * 根据金额推荐最优优惠券
     * @param customerId
     * @return
     */
    public List<CouponDto> queyUserCoupon(@Param("customerId") Long customerId,
                                          @Param("rightdetailType") String rightdetailType,
                                          @Param("couponStatus") String couponStatus);

    /**
     * 根据编号查询优惠券内容
     * */
    public List<Coupon> selectCouponByCouponId(Long couponId);

    /**
     * 优惠券使用记录列表
     */
    public List<Coupon> couponRecord(@Param("customerId") Long customerId,
                                     @Param("couponStatus") String couponStatus);

    /**
     * 根据id查询优惠券
     * */
    public Coupon couponList(Long couponId);

    /**
     * 远程调用
     * @param couponId
     * @return
     */
    public Coupon couponById(Long couponId);

    /**
     * 根据会员权益id查询优惠卷信息
     */
    public CouponBO couponByCustomerRightDetailId(Long customerRightDetailId);

    /**
     * 酒店适用优惠券列表
     * */
    public List<Coupon> hotelCouponList(@Param("type") String type, @Param("date") String date);

    List<ProductSelectDTO> queryCouponSelect();

    /**
     * 查询贵宾厅无限券id
     * */
    public Coupon infiniteVIPHall();
}
